package com.bosssoft.common.group;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * Copyright (C), 2001-2031, www.bosssof.com.cn
 * FileName: ListValue.java
 * Author: YuXingZh
 * Date: 2024-05-28 19:54
 * Description: 用于验证某个值是否在指定的值列表中。
 * History:
 * Date Author Version Desc
 * 2024-01-01 bosssoft 1.0.0 initialize this file
 */
@Documented
@Constraint(validatedBy = { ListValueConstraintValidator.class })
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
/**
 * @className: ListValue
 * @description:
 * 解决什么问题：验证一个值是否在指定的值列表中。
 * 主要方法：无
 * 注意事项：被注解的元素必须是一个集合，并且集合中的值必须存在于vals参数指定的列表中。
 * 例如：被注解的属性值必须是在{1, 2, 3}中的一个。
 * @Author: YuXingZh
 * @date: 2024-05-28 19:54
 * @since 1.0
 */
public @interface ListValueGroup {

    String message() default "{com.nwpu.server.common.valid.ListValue.message}";

    Class<?>[] groups() default { };

    Class<? extends Payload>[] payload() default { };

    int[] vals() default { };

}
